package com.jinunn.user.service;

import com.atguigu.yygh.model.user.UserInfo;
import com.atguigu.yygh.vo.user.LoginVo;
import com.atguigu.yygh.vo.user.UserAuthVo;
import com.atguigu.yygh.vo.user.UserInfoQueryVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * @author JinDun
 * @date 2021/5/11 22:41
 */
public interface UserInfoService extends IService<UserInfo> {

    Map<String, Object> loginUser(LoginVo loginVo);

    Map<String,Object> callback(String code, String state);

    /**
     * 用户认证接口
     * @param userAuthVo 用户认证信息
     * @param userId 用户id
     */
    void userAuth(UserAuthVo userAuthVo, Long userId);

    /**
     * 获取用户信息详情
     * @param request 获取用户id
     * @return  用户基本信息
     */
    UserInfo getUserDetail(HttpServletRequest request);

    /**
     * 用户列表（条件查询带分页）
     * @param page 当前业
     * @param limit 每页记录数
     * @param userInfoQueryVo  条件查询
     * @return 用户列表
     */
    Page<UserInfo> getList(Long page, Long limit, UserInfoQueryVo userInfoQueryVo);

    /**
     * 用户锁定
     * @param userId 用户id
     * @param status 状态
     * @return true or false
     */
    boolean updateStatus(Integer userId, Integer status);

    /**
     * 用户详情和就诊人信息
     * @param userId  用户id
     * @return 用户详情和就诊人信息
     */
    Map<String, Object> getUserAndDictDetail(Integer userId);

    /**
     * 修改认证状态
     * @param userId 用户id
     * @param authStatue 状态
     * @return true or false
     */
    boolean approvalAuthStatus(Integer userId, Integer authStatue);
}
